Skip to content

常用套件整理 - Visual Studio

TLDR

  • 擴充套件管理:建議改用「獨立清單」而非安裝大型同捆包,以避免功能重疊、過時或移除不乾淨的問題。
  • 字型選擇:推薦使用 Cascadia Mono,其專為程式碼設計且在高解析度螢幕表現優異;建議避開 Cascadia Code 以免連字效果(Ligatures)造成符號判讀混淆。
  • Entity Framework Core:非建置 Entity 的專案,僅需安裝 Microsoft.EntityFrameworkCore、資料庫提供者(如 SqlServer)與 Relational 即可。
  • Log 管理:推薦使用 Serilog,其結構化紀錄(Data)特性遠優於傳統 NLog 的文字紀錄(Text),建議搭配 Seq 進行視覺化除錯。
  • DI 增強:使用 Scrutor 填補微軟原生 DI 不支援組件掃描(Assembly Scanning)的缺口。
  • 反向代理:微軟官方的 YARP 因與 .NET 高度整合且效能優異,已取代 Ocelot 成為新專案首選。
  • 壓縮套件:若有資料不落地或加密需求,應優先使用原生 System.IO.Compression 或記憶體內處理套件,避免呼叫外部 7z.exe 產生暫存檔導致資安風險。

Visual Studio 擴充套件建議

在 Visual Studio 開發環境中,建議將大型同捆包拆解為獨立套件安裝。

為什麼建議改用獨立清單?

什麼情況下會遇到管理混亂的問題:當你習慣安裝「Productivity Power Tools」或「Web Essentials」等大型同捆包時。

  • 內容不透明:無法精確掌握安裝了哪些工具,且內容常隨版本變動。
  • 功能重疊與過時:隨 Visual Studio 更新,許多舊功能已由內建功能取代(如 Zen-Coding)。
  • 移除不乾淨:移除同捆包時,子套件往往會殘留在環境中。

推薦擴充套件清單

  • Productivity Power Tools 相關
    • Double-Click Maximize 2022:點擊兩下最大化視窗。
    • Fix Mixed Tabs:偵測並轉換 Tabs 與空格混用的情況。
    • Middle Click Scroll:使用滑鼠滾輪移動文件。
    • Solution Error Visualizer:在 Solution Explorer 顯示錯誤提示。
  • Dev Essentials 相關
    • File Icons:美化檔案圖示。
    • SVG Viewer:SVG 預覽與編輯優化。
    • Editor Enhancements:強化程式碼排序與編碼功能。
    • Markdown Editor v2:增強 Markdown 編輯體驗。
    • Image Optimizer:圖片壓縮。
  • 其他實用工具
    • ResXManager:多國語言管理,提供 Excel 表格介面。
    • Editor Guidelines:設定程式碼長度補助線(建議 80, 100, 120 char)。
    • VSColorOutput:讓 Output 視窗的 Build 訊息具備顏色區分。

Visual Studio 環境與編輯器設定

顯示與字型優化

什麼情況下需要調整字型:當你在高解析度螢幕上進行長時間開發時。

  • 字型選擇:推薦使用 Cascadia Mono(大小 12)。
  • 避免連字困擾:選擇 Cascadia Mono 而非 Cascadia Code,是為了避免 != 自動轉換為 等連字效果,造成符號判讀上的混淆。
  • 螢幕顯示:若操作時滑鼠指標亂跑(常見於 SQL 檔案),可嘗試關閉「為不同像素密度的螢幕最佳化呈現方式」。

編輯器進階設定

  • 文件索引標籤:建議將位置設為「左」或「右」以增加垂直閱讀空間,並啟用「依專案或檔案類型著色」。
  • C# 進階設定
    • 大綱:開啟「顯示程序行分隔符號」,以白線區隔方法與屬性。
    • 淡出:啟用多餘 Using 與變數的淡出提醒。
    • 編輯器說明:開啟「為重新指派的變數加上底線」,方便追蹤變數狀態。

NuGet 套件選用策略

資料庫與 ORM

  • EF Core:非建置 Entity 的專案,僅需安裝 Microsoft.EntityFrameworkCoreMicrosoft.EntityFrameworkCore.SqlServer(或對應提供者)以及 Microsoft.EntityFrameworkCore.Relational
  • Dapper:輕量化 ORM 首選。
  • EF Core Power Tools:提供反向工程圖形化介面,方便從資料庫生成 Model。

日誌與架構增強

  • Serilog.AspNetCore:現代化結構式日誌標準。
    • 核心觀念:紀錄「資料」而非「字串」。例如 Log.Info("User {Id}", id) 可將 Id 視為可搜尋欄位。
    • 推薦組合:搭配 Serilog.Sinks.Seq 進行視覺化除錯。
  • Scrutor:增強微軟原生 DI,補足不支援組件掃描(Assembly Scanning)的缺口。

網路與壓縮

  • YARP:微軟官方主導的反向代理套件,效能優於 Ocelot,適合新專案。
  • 壓縮套件選擇
    • 若專案已有 NPOI,可直接使用其依賴的 SharpZipLib
    • 若無特殊依賴,使用 DotNetZip 即可。
    • 資安提醒:避免呼叫 7z.exe 等外部程式,改用原生 System.IO.Compression 或記憶體內處理,防止暫存檔殘留導致機密外洩。

專案版本號

  • MinVer:適合輕量級專案,依據 Git Tag 決定版號。
  • GitVersion.MsBuild:適合複雜分支策略(如 GitFlow)的專案。

異動歷程

    • 初版文件建立。
    • 增加「自動更新延伸模組」設定說明。
    • 移除「Code Cleanup on Save」,Visual Studio 2022 已經內建很久,不用特別列出來。
    • 更新部分套件的說明。
    • 移除過時以及需商用授權的套件。
    • 更新 Visual Studio 設定建議,推薦改用 Cascadia 系列字型。
    • 新增 YARP、Scrutor 與 MQTTnet 等套件。